Мощным средством управления интегрированным в приложение отчетом является возможность изменения формул отчета во время выполнения пользовательской программы. Как уже было сказано в предыдущих шагах, в Crystal Reports имеется два типа формул:
- "обычные", служащие для производства текущих вычислений;
- формулы выделения записей.
Вначале рассмотрим управление "обычными" формулами. Элемент управления ActiveX Crystal Report Control предоставляет имеющиеся в отчете формулы в виде массива с индексацией от нуля. Для управления формулами служит свойство Formulas. Его синтаксис:
[форма.]Report.Formulas(индекс массива)[=Имя формулы=Текст формулы]
Если в отчете имеется несколько формул, то все их изменять не обязательно, можно ограничиться только требуемыми. Имя формулы необходимо вводить полностью, но без префикса @. Текст формулы обязательно должен передаваться в виде строки.
Предположим, необходимо сформировать отчет по продажам для двух ситуаций: со скидкой, и без таковой. Будем менять формулу из Шаг 18 - Применение полей формул часть 2.
Форма Visual Basic:

Обработчик нажатия кнопки:
Private Sub cmdRep_Click()
Dim StrFormula As String 'здесь будет храниться текст формулы
If Val(txtBonus) > 0 Then 'пользователь ввел величину скидки
StrFormula = "{Order Details.UnitPrice}*{Order Details.Quantity}*" & Str$(Val(txtBonus) * 0.01)
Else 'скидки нет
StrFormula = "{Order Details.UnitPrice}*{Order Details.Quantity}"
End If
CrystalReport1.Formulas(0) = "PSum=" & StrFormula
CrystalReport1.Action = 1
End Sub
При нажатии кнопки анализируется содержимое текстового поля в форме, и в зависимости от его содержания изменяется формула.